home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
redakcyjne
/
Windows Live Essentials
/
wlsetup-web.exe
/
0
/
CONTENT
/
MSNPANEHELP_SCRIPT.JS
next >
Wrap
Text File
|
2010-01-12
|
15KB
|
642 lines
/**********************************************************************
Javascript functions for Pane Help
Note: Many functions are designed for PROC, PH_MEGA, TROU topics
which have subtopic_choice radio buttons.
Note: All functions are designed to work for IE4+ and Nav6 browsers.
Note: Cannot use less-than or greater-than symbols
in the javascript or the XML parser will crash.
**********************************************************************/
// Global variables
var g_strSubtopicChoiceContext = ""
var g_strCurrentContext = ""
var g_arrContextElements
var g_arrContextRelatedElements
var g_arrArrowImages = new Array('arrowblueright.gif','arrowbluedown.gif')
var g_arrV4
var isIE4 = false
var isNav4 = false
var isNav6 = false
//Create the getV4 function, and then run it.
function getV4()
{
if ( typeof parent.v4 == 'string' )
{
var pv4 = parent.v4;
g_arrV4 = pv4.split(',');
}
else
{
g_arrV4 = new Array('');
}
}
getV4(); //execute the function during page load
//Conditional content test
function ccTest( strValue )
{
return ( v4Contains(strValue) || userAgentContains(strValue) );
}
function v4Contains( strValue )
{
if ( typeof strValue == 'string' )
{
if ( strValue != "" )
{
//Handle possible multiple values
var arrValues;
arrValues = strValue.split(',');
for( i = 0; i < g_arrV4.length; i++ )
{
for( j = 0; j < arrValues.length; j++ )
{
if ( g_arrV4[i] == arrValues[j] ) return true;
}
}
}
}
return false;
}
function userAgentContains( strValue )
{
if ( typeof strValue == 'string' )
{
if ( strValue != "" )
{
//Handle possible multiple values
var arrValues;
arrValues = strValue.split(',');
for( j = 0; j < arrValues.length; j++ )
{
if ( navigator.userAgent.indexOf( arrValues[j] ) != -1) return true;
}
}
}
return false;
}
function onPageLoad( strTemplate )
{
//Even though the page is supposed to be fully loaded before the onLoad event is triggered,
//Nav6 will return false from the existsForm function unless there is a slight delay before
//querying for the existence of the form.
if (isIE4)
{
startPage(strTemplate)
}
else if (isNav6)
{
var strNext = "startPage('" + strTemplate + "')"
setTimeout(strNext,0) //Even though the delay is set to 0, this works?!
}
}
function startPage( strTemplate )
{
if ((strTemplate == 'PROC') || (strTemplate == 'TROU') || (strTemplate == 'PH_MEGA'))
{
if ( existsForm("SubtopicChoiceForm") )
{
// set the classNames of the elements that have context
// or are related ancestors of the context elements
g_arrContextElements = new Array('INSTRUCTIONS','MORE_INFO','LINK')
g_arrContextRelatedElements = new Array('LINKS')
hideContextContent() //hide any elements that have context
resetSubtopicChoiceForm() //make sure the buttons are unchecked and the context is nothing
}
else
{
showContextContent()
}
}
}
function resetSubtopicChoiceForm()
{
if ( existsForm("SubtopicChoiceForm") )
{
//uncheck all SubtopicChoice radio elements
var oRadioGroup = document.forms["SubtopicChoiceForm"].SubtopicChoice
for (var i = 0; i < oRadioGroup.length; i++)
{
oRadioGroup[i].checked = false
}
//set the subtopic_choice context to nothing
setSubtopicChoiceContext("")
}
}
function setCurrentContext()
{
g_strCurrentContext = getSubtopicChoiceContext()
}
function setSubtopicChoiceContext( strContext )
{
g_strSubtopicChoiceContext = strContext
}
function getSubtopicChoiceContext()
{
return g_strSubtopicChoiceContext
}
function hasTheContext( strElementContext, strCurrentContext )
{
// Does this element have the current context
var arrElementContext = strElementContext.split(",")
for (var i = 0; i < arrElementContext.length; i++)
{
if ( (arrElementContext[i] == g_strCurrentContext) )
{
return true
}
}
return false
}
function getElementContext( oElement )
{
//The context is contained in the id attribute
var strContext = ( oElement.id ) ? oElement.id : ""
return strContext
}
function clickedSubtopicChoice( strContext )
{
setSubtopicChoiceContext( strContext ) // remember the context
hideContextContent() // first, hide all context content
showContextContent() // finally, show all context content dependent on the new context
}
function clickedSubtopicChoiceText( strContext, strID )
{
oSubtopicChoice = getElementById( strID );
oSubtopicChoice.checked = true;
clickedSubtopicChoice( strContext );
}
function isContextElement( oElement )
{
// Is oElement an element that uses the id attribute to indicate the context?
for (var i=0; i < g_arrContextElements.length; i++)
{
if (oElement.className == g_arrContextElements[i])
{
return true
}
}
return false
}
function isContextRelatedElement( oElement )
{
// Is oElement an element whose display depends on a child elements context?
for (var i=0; i < g_arrContextRelatedElements.length; i++)
{
if (oElement.className == g_arrContextRelatedElements[i])
{
return true
}
}
return false
}
function showContentForContextElement(oElement,oLinksElement)
{
if (isContextElement(oElement))
{
if (hasTheContext(getElementContext(oElement),g_strCurrentContext))
{
if (oElement.className == 'LINK')
{
setStylePropertyByElement( oLinksElement, 'display', '' ) // display the related LINKS container
}
if (oElement.className == 'SUBTOPIC_CHOICE')
{
var oSubtopicChoicesElement = getElementById('SUBTOPIC_CHOICES')
if (oSubtopicChoicesElement != null)
{
setStylePropertyByElement( oSubtopicChoicesElement, 'display', '' ) // display the related LINKS container
}
}
setStylePropertyByElement( oElement, 'display', '' ) // display the element
}
else
{
setStylePropertyByElement( oElement, 'display', 'none' ) // hide the element
}
}
}
function showContextContent()
{
// Display all elements appropriate for the context
var oElement
var oLinksElement
//First, make sure that the current context is up-to-date
setCurrentContext()
if (isIE4)
{
for (var i = 0; i != document.all.length; i++)
{
oElement = document.all[i]
if (oElement.className == 'LINKS')
{
oLinksElement = oElement
}
showContentForContextElement(oElement,oLinksElement)
}
}
else if (isNav6)
{
var colElements
//elements with INSTRUCTIONS, MORE_INFO, LINKS className are <div> tags
colElements = document.getElementsByTagName("div")
for (var i = 0; i != colElements.length; i++)
{
oElement = colElements[i]
if (oElement.className == 'LINKS')
{
oLinksElement = oElement
}
showContentForContextElement(oElement,oLinksElement)
}
//elements with LINK className are <a> tags
colElements = document.getElementsByTagName("a")
for (var i = 0; i != colElements.length; i++)
{
oElement = colElements[i]
showContentForContextElement(oElement,oLinksElement)
}
}
}
function hideContentForContextElement(oElement)
{
if ( (isContextElement(oElement)) || (isContextRelatedElement(oElement)) )
{
setStylePropertyByElement( oElement, 'display', 'none' ) // hide the element
}
}
function hideContextContent()
{
// Hide all elements that have context
var oElement
if (isIE4)
{
for (var i = 0; i != document.all.length; i++)
{
oElement = document.all[i]
hideContentForContextElement(oElement)
}
}
else if (isNav6)
{
var colElements
//elements with INSTRUCTIONS, MORE_INFO, LINKS className are <div> tags
colElements = document.getElementsByTagName("div")
for (var i = 0; i != colElements.length; i++)
{
oElement = colElements[i]
hideContentForContextElement(oElement)
}
//elements with LINK className are <a> tags
colElements = document.getElementsByTagName("a")
for (var i = 0; i != colElements.length; i++)
{
oElement = colElements[i]
hideContentForContextElement(oElement)
}
}
}
function toggleTips( strTipsID, strTipsImageID )
{
var oTipsImageElement = getElementById( strTipsImageID )
if (isIE4 || isNav6)
{
if ( getStylePropertyById( strTipsID,'display')=='none' )
{
setStylePropertyById( strTipsID, 'display', 'block' ) //show the Tips
if (oTipsImageElement != null)
{
//show the down arrow
oTipsImageElement.src = g_arrArrowImages[1]
}
}
else
{
setStylePropertyById( strTipsID, 'display', 'none' ) //hide the Tips
if (oTipsImageElement != null)
{
//show the right arrow
oTipsImageElement.src = g_arrArrowImages[0]
}
}
}
else
{} //so Nav4 won't return error
}
function takeMeThere( strURL, strWindowName )
{
window.open( strURL, strWindowName )
}
function toggleALTTOCImg( element, strEvent )
{
// redirect to the ti function
ti( element, strEvent )
}
function ti( element, strEvent )
{
var oElement;
oElement = getElementObject( element );
if (oElement != null)
{
var strSrc = oElement.src;
var intIndex = strSrc.lastIndexOf("/");
var strSrcRoot = "";
var strImgName = strSrc;
var strNewImgName;
if (intIndex >= 0)
{
strSrcRoot = strSrc.substring(0,intIndex+1);
strImgName = strSrc.substring(intIndex+1,strSrc.length);
}
strImgName = strImgName.substring(0,strImgName.length - 4);
switch (strImgName)
{
case "question_icon":
strNewImgName = 'question_icon_hover';
break;
case "question_icon_hover":
strNewImgName = 'question_icon';
break;
case "widget_plus":
if ( strEvent == 'r')
strNewImgName = 'widget_plus_hvr';
else if ( strEvent == 't')
strNewImgName = 'widget_plus';
else
strNewImgName = 'widget_minus';
break;
case "widget_plus_hvr":
if ( strEvent == 't')
strNewImgName = 'widget_plus';
else
strNewImgName = 'widget_minus';
break;
case "widget_minus":
if ( strEvent == 'r')
strNewImgName = 'widget_minus_hvr';
else if ( strEvent == 't')
strNewImgName = 'widget_minus';
else
strNewImgName = 'widget_plus';
break;
case "widget_minus_hvr":
if ( strEvent == 't')
strNewImgName = 'widget_minus';
else
strNewImgName = 'widget_plus';
break;
}
oElement.src = strSrcRoot + strNewImgName + '.gif';
}
}
/**********************************************************************
Generic Cross Browser Code
**********************************************************************/
function setBrowser()
{
//Simple browser sniffer
if (document.all)
{
isIE4 = true
}
else if (document.layers)
{
isNav4 = true
}
else if (document.getElementById)
{
isNav6 = true //also true for IE5.5
}
}
setBrowser(); // determine which browser we are using
function blur( oElement )
{
oElement.blur()
}
function existsForm( name )
{
if ( typeof document.forms[name] == "object" )
return true
else
return false
}
function getElementById( strId )
{
if (isNav6)
{
return document.getElementById( strId );
}
else if (isIE4)
{
return document.all[strId]
}
else
{
return null
}
}
function getElementObject( element )
{
var oElement = null;
// get the element
if (typeof element == "object")
{
oElement = element;
}
else if (typeof element == "string")
{
oElement = getElementById( element );
}
return oElement;
}
function getStyleBySelector( selector )
{
if (!isNav6)
{
return null;
}
var sheetList = document.styleSheets;
var ruleList;
var i, j;
/* look through stylesheets in reverse order that
they appear in the document */
for (i=sheetList.length-1; i >= 0; i--)
{
ruleList = sheetList[i].cssRules;
for (j=0; j<ruleList.length; j++)
{
if (ruleList[j].type == CSSRule.STYLE_RULE && ruleList[j].selectorText == selector)
{
return ruleList[j].style;
}
}
}
return null;
}
function getStylePropertyById( strId, strProperty )
{
if (isNav6)
{
var styleObject = document.getElementById( strId );
if (styleObject != null)
{
styleObject = styleObject.style;
if (styleObject[strProperty])
{
return styleObject[ strProperty ];
}
}
styleObject = getStyleBySelector( "#" + strId );
return (styleObject != null) ?
styleObject[strProperty] :
null;
}
else if (isIE4)
{
return document.all[strId].style[strProperty];
}
else
{
return ""
}
}
function setStylePropertyById( strId, strProperty, strValue )
{
if (isNav6)
{
var styleObject = document.getElementById( strId );
if (styleObject != null)
{
styleObject = styleObject.style;
styleObject[ strProperty ] = strValue;
}
}
else if (isIE4)
{
if (document.all[strId] != null)
document.all[strId].style[strProperty] = strValue;
}
else
{} //so Nav4 won't return error
}
function setStylePropertyByElement( oElement, strProperty, strValue )
{
if (isNav6)
{
var styleObject = oElement;
if (styleObject != null)
{
styleObject = styleObject.style;
styleObject[ strProperty ] = strValue;
}
}
else if (isIE4)
{
if (oElement != null)
oElement.style[strProperty] = strValue;
}
else
{} //so Nav4 won't return error
}
function toggleElementDisplay( element, strStyle )
{
// strStyle = (none,block,inline)
var strID
//get the element id
if (typeof element == "object")
{
strID = element.id
}
else if (typeof element == "string")
{
strID = element
}
if ((strID != "") && (strID != null))
{
if (isIE4 || isNav6)
{
if ( getStylePropertyById( strID,'display')=='none' )
{
setStylePropertyById( strID, 'display', strStyle ) //show the element
}
else
{
setStylePropertyById( strID, 'display', 'none' ) //hide the element
}
}
}
}
function toggleImg( element, strImg1, strImg2 )
{
var oElement;
oElement = getElementObject( element );
if (oElement != null)
{
var strSrc = oElement.src;
if ( strSrc.indexOf(strImg1) > -1 )
{
oElement.src = strImg2;
}
else
{
oElement.src = strImg1;
}
}
}
function changeImg( element, strImg )
{
var oElement;
oElement = getElementObject( element );
if (oElement != null)
{
var strSrc = oElement.src;
oElement.src = strImg;
}
}
/**********************************************************************
End Generic Cross-Browser Code
**********************************************************************/